#ifndef data_h
#define data_h

#include "oui.h"

static uint8_t data_macBuffer;
static char data_vendorBuffer;
static String data_vendorStrBuffer = "";

#define bufSize 6000
int bufc = 0; //buffer counter;

char data_websiteBuffer[bufSize];

/*  sendHeader must be called first, 
  then copy every string (or substring, when generating json files) with sendToBuffer
  and if everything is done call sendBuffer.
*/
void sendBuffer() {
  if(bufc > 0) {
    server.sendContent_P(data_websiteBuffer, bufc);
    bufc = 0;
  }
}

void sendToBuffer(String str) {
  size_t len = str.length();
  if(bufc + len > bufSize){
    server.sendContent_P(data_websiteBuffer, bufc);
    bufc = 0;
  }
  memcpy(data_websiteBuffer + bufc, str.c_str(), len);
  bufc += len;
}

void sendHeader(int code, String type, size_t _size) {
  server.setContentLength(_size);
  server.send(code, type, "");
}

bool sendSPIFFSFile(String path, String mime) {
  #ifdef debug
    Serial.print("REQ: ");
    Serial.print(path);
    Serial.print(" (");
    Serial.print(mime);
    Serial.print(")");
  #endif
  
  if(SPIFFS.exists(path)) {
    //Serial.println("File exists");
    File myFile = SPIFFS.open(path, "r");
    server.streamFile(myFile, mime);
    myFile.close();
    #ifdef debug
      Serial.println(" [OK]");
    #endif
    return true;
  } else {
    Serial.println(" [SPIFFS FAIL]");
    return false;
  }
}

bool loadFromFlash(String path) {
  String dataType = "text/plain";
  if(path.endsWith("/")) path += "index.html";

  if(path.endsWith("html")) dataType = "text/html";
  if(path.endsWith("css")) dataType = "text/css;charset=UTF-8";
  if(path.endsWith("js")) dataType = "text/javascript";
  if(path.endsWith("json")) dataType = "text/json";

  return sendSPIFFSFile(path, dataType);

}

String data_getVendor(uint8_t first, uint8_t second, uint8_t third) {
  data_vendorStrBuffer = "";

  for (int i = 0; i < sizeof(data_vendors) / 11; i++) {

    data_macBuffer = pgm_read_byte_near(data_vendors + i * 11 + 0);
    if (data_macBuffer == first) {
      data_macBuffer = pgm_read_byte_near(data_vendors + i * 11 + 1);
      if (data_macBuffer == second) {
        data_macBuffer = pgm_read_byte_near(data_vendors + i * 11 + 2);
        if (data_macBuffer == third) {

          for (int h = 0; h < 8; h++) {
            data_vendorBuffer = (char)pgm_read_byte_near(data_vendors + i * 11 + 3 + h);
            if (data_vendorBuffer != 0x00) data_vendorStrBuffer += data_vendorBuffer;
          }
          return data_vendorStrBuffer;
        }

      }
    }

  }

  return data_vendorStrBuffer;
}
/*
char* data_getStyle() { 
  int _size = sizeof(data_styleCSS);
  for (int i = 0; i < sizeof(data_websiteBuffer); i++) {
    if (i < _size) data_websiteBuffer[i] = pgm_read_byte_near(data_styleCSS + i);
    else data_websiteBuffer[i] = 0x00;
  }
  return data_websiteBuffer;
}*/

//source: https://forum.arduino.cc/index.php?topic=38107.0
void PrintHex8(uint8_t *data, uint8_t length) {
  Serial.print("0x");
  for (int i = 0; i < length; i++) {
    if (data[i] < 0x10) {
      Serial.print("0");
    }
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
}

//source: http://shelvin.de/eine-integer-zahl-in-das-arduiono-eeprom-schreiben/
void eepromWriteInt(int adr, int val) {
  byte low, high;
  low = val & 0xFF;
  high = (val >> 8) & 0xFF;
  EEPROM.write(adr, low);
  EEPROM.write(adr + 1, high);
  return;
}

int eepromReadInt(int adr) {
  byte low, high;
  low = EEPROM.read(adr);
  high = EEPROM.read(adr + 1);
  return low + ((high << 8) & 0xFF00);
}

void getRandomVendorMac(uint8_t *buf) {
  int _macRandom = random(sizeof(data_vendors) / 11);
  for (int h = 0; h < 3; h++) buf[h] = pgm_read_byte_near(data_vendors + _macRandom * 11 + h);
  for (int h = 0; h < 3; h++) buf[h + 3] = random(255);
}

bool intInArray(int num, int _array[]) {
  for (int i = 0; i < sizeof(_array); i++) {
    if (_array[i] == num) return true;
  }
  return false;
}

File errlog;
void openLog(){ errlog = SPIFFS.open("/log.txt", "a");}
void addLog(String str){if(errlog){ errlog.println(str); Serial.println(str);}}
void closeLog(){ errlog.close(); }

// Created by http://oleddisplay.squix.ch/ Consider a donation
// In case of problems make sure that you are using the font file with the correct version!
const char Roboto_Mono_8[] PROGMEM = {
  0x07, // Width: 7
  0x0A, // Height: 10
  0x20, // First Char: 32
  0xE0, // Numbers of Chars: 224

  // Jump Table:
  0xFF, 0xFF, 0x00, 0x05,  // 32:65535
  0x00, 0x00, 0x05, 0x05,  // 33:0
  0x00, 0x05, 0x05, 0x04,  // 34:5
  0x00, 0x0A, 0x09, 0x05,  // 35:10
  0x00, 0x13, 0x07, 0x05,  // 36:19
  0x00, 0x1A, 0x0B, 0x06,  // 37:26
  0x00, 0x25, 0x09, 0x05,  // 38:37
  0x00, 0x2E, 0x05, 0x05,  // 39:46
  0x00, 0x33, 0x06, 0x05,  // 40:51
  0x00, 0x39, 0x07, 0x05,  // 41:57
  0x00, 0x40, 0x09, 0x05,  // 42:64
  0x00, 0x49, 0x09, 0x05,  // 43:73
  0x00, 0x52, 0x06, 0x05,  // 44:82
  0x00, 0x58, 0x07, 0x05,  // 45:88
  0x00, 0x5F, 0x05, 0x05,  // 46:95
  0x00, 0x64, 0x07, 0x05,  // 47:100
  0x00, 0x6B, 0x09, 0x06,  // 48:107
  0x00, 0x74, 0x05, 0x05,  // 49:116
  0x00, 0x79, 0x09, 0x05,  // 50:121
  0x00, 0x82, 0x07, 0x05,  // 51:130
  0x00, 0x89, 0x09, 0x05,  // 52:137
  0x00, 0x92, 0x07, 0x05,  // 53:146
  0x00, 0x99, 0x07, 0x05,  // 54:153
  0x00, 0xA0, 0x07, 0x05,  // 55:160
  0x00, 0xA7, 0x07, 0x05,  // 56:167
  0x00, 0xAE, 0x09, 0x05,  // 57:174
  0x00, 0xB7, 0x05, 0x05,  // 58:183
  0x00, 0xBC, 0x06, 0x05,  // 59:188
  0x00, 0xC2, 0x09, 0x05,  // 60:194
  0x00, 0xCB, 0x07, 0x05,  // 61:203
  0x00, 0xD2, 0x09, 0x05,  // 62:210
  0x00, 0xDB, 0x07, 0x05,  // 63:219
  0x00, 0xE2, 0x0B, 0x07,  // 64:226
  0x00, 0xED, 0x07, 0x05,  // 65:237
  0x00, 0xF4, 0x07, 0x05,  // 66:244
  0x00, 0xFB, 0x09, 0x06,  // 67:251
  0x01, 0x04, 0x09, 0x06,  // 68:260
  0x01, 0x0D, 0x09, 0x05,  // 69:269
  0x01, 0x16, 0x09, 0x05,  // 70:278
  0x01, 0x1F, 0x09, 0x06,  // 71:287
  0x01, 0x28, 0x09, 0x06,  // 72:296
  0x01, 0x31, 0x07, 0x05,  // 73:305
  0x01, 0x38, 0x07, 0x05,  // 74:312
  0x01, 0x3F, 0x09, 0x05,  // 75:319
  0x01, 0x48, 0x09, 0x05,  // 76:328
  0x01, 0x51, 0x09, 0x06,  // 77:337
  0x01, 0x5A, 0x09, 0x06,  // 78:346
  0x01, 0x63, 0x09, 0x06,  // 79:355
  0x01, 0x6C, 0x09, 0x05,  // 80:364
  0x01, 0x75, 0x0A, 0x06,  // 81:373
  0x01, 0x7F, 0x07, 0x05,  // 82:383
  0x01, 0x86, 0x09, 0x06,  // 83:390
  0x01, 0x8F, 0x09, 0x05,  // 84:399
  0x01, 0x98, 0x09, 0x06,  // 85:408
  0x01, 0xA1, 0x07, 0x05,  // 86:417
  0x01, 0xA8, 0x09, 0x05,  // 87:424
  0x01, 0xB1, 0x07, 0x05,  // 88:433
  0x01, 0xB8, 0x07, 0x05,  // 89:440
  0x01, 0xBF, 0x09, 0x05,  // 90:447
  0x01, 0xC8, 0x08, 0x05,  // 91:456
  0x01, 0xD0, 0x08, 0x05,  // 92:464
  0x01, 0xD8, 0x06, 0x05,  // 93:472
  0x01, 0xDE, 0x07, 0x05,  // 94:478
  0x01, 0xE5, 0x08, 0x05,  // 95:485
  0x01, 0xED, 0x05, 0x05,  // 96:493
  0x01, 0xF2, 0x09, 0x05,  // 97:498
  0x01, 0xFB, 0x09, 0x06,  // 98:507
  0x02, 0x04, 0x07, 0x06,  // 99:516
  0x02, 0x0B, 0x09, 0x06,  // 100:523
  0x02, 0x14, 0x07, 0x05,  // 101:532
  0x02, 0x1B, 0x09, 0x05,  // 102:539
  0x02, 0x24, 0x0A, 0x06,  // 103:548
  0x02, 0x2E, 0x09, 0x06,  // 104:558
  0x02, 0x37, 0x07, 0x05,  // 105:567
  0x02, 0x3E, 0x08, 0x06,  // 106:574
  0x02, 0x46, 0x09, 0x05,  // 107:582
  0x02, 0x4F, 0x07, 0x05,  // 108:591
  0x02, 0x56, 0x0B, 0x07,  // 109:598
  0x02, 0x61, 0x09, 0x06,  // 110:609
  0x02, 0x6A, 0x09, 0x06,  // 111:618
  0x02, 0x73, 0x09, 0x06,  // 112:627
  0x02, 0x7C, 0x0A, 0x06,  // 113:636
  0x02, 0x86, 0x07, 0x05,  // 114:646
  0x02, 0x8D, 0x07, 0x05,  // 115:653
  0x02, 0x94, 0x09, 0x05,  // 116:660
  0x02, 0x9D, 0x09, 0x06,  // 117:669
  0x02, 0xA6, 0x07, 0x05,  // 118:678
  0x02, 0xAD, 0x09, 0x05,  // 119:685
  0x02, 0xB6, 0x07, 0x05,  // 120:694
  0x02, 0xBD, 0x07, 0x05,  // 121:701
  0x02, 0xC4, 0x09, 0x05,  // 122:708
  0x02, 0xCD, 0x08, 0x05,  // 123:717
  0x02, 0xD5, 0x06, 0x05,  // 124:725
  0x02, 0xDB, 0x07, 0x05,  // 125:731
  0x02, 0xE2, 0x09, 0x05,  // 126:738
  0xFF, 0xFF, 0x00, 0x05,  // 127:65535
  0xFF, 0xFF, 0x00, 0x05,  // 128:65535
  0xFF, 0xFF, 0x00, 0x05,  // 129:65535
  0xFF, 0xFF, 0x00, 0x05,  // 130:65535
  0xFF, 0xFF, 0x00, 0x05,  // 131:65535
  0xFF, 0xFF, 0x00, 0x05,  // 132:65535
  0xFF, 0xFF, 0x00, 0x05,  // 133:65535
  0xFF, 0xFF, 0x00, 0x05,  // 134:65535
  0xFF, 0xFF, 0x00, 0x05,  // 135:65535
  0xFF, 0xFF, 0x00, 0x05,  // 136:65535
  0xFF, 0xFF, 0x00, 0x05,  // 137:65535
  0xFF, 0xFF, 0x00, 0x05,  // 138:65535
  0xFF, 0xFF, 0x00, 0x05,  // 139:65535
  0xFF, 0xFF, 0x00, 0x05,  // 140:65535
  0xFF, 0xFF, 0x00, 0x05,  // 141:65535
  0xFF, 0xFF, 0x00, 0x05,  // 142:65535
  0xFF, 0xFF, 0x00, 0x05,  // 143:65535
  0xFF, 0xFF, 0x00, 0x05,  // 144:65535
  0xFF, 0xFF, 0x00, 0x05,  // 145:65535
  0xFF, 0xFF, 0x00, 0x05,  // 146:65535
  0xFF, 0xFF, 0x00, 0x05,  // 147:65535
  0xFF, 0xFF, 0x00, 0x05,  // 148:65535
  0xFF, 0xFF, 0x00, 0x05,  // 149:65535
  0xFF, 0xFF, 0x00, 0x05,  // 150:65535
  0xFF, 0xFF, 0x00, 0x05,  // 151:65535
  0xFF, 0xFF, 0x00, 0x05,  // 152:65535
  0xFF, 0xFF, 0x00, 0x05,  // 153:65535
  0xFF, 0xFF, 0x00, 0x05,  // 154:65535
  0xFF, 0xFF, 0x00, 0x05,  // 155:65535
  0xFF, 0xFF, 0x00, 0x05,  // 156:65535
  0xFF, 0xFF, 0x00, 0x05,  // 157:65535
  0xFF, 0xFF, 0x00, 0x05,  // 158:65535
  0xFF, 0xFF, 0x00, 0x05,  // 159:65535
  0xFF, 0xFF, 0x00, 0x05,  // 160:65535
  0x02, 0xEB, 0x06, 0x05,  // 161:747
  0x02, 0xF1, 0x09, 0x06,  // 162:753
  0x02, 0xFA, 0x09, 0x05,  // 163:762
  0x03, 0x03, 0x09, 0x06,  // 164:771
  0x03, 0x0C, 0x09, 0x05,  // 165:780
  0x03, 0x15, 0x06, 0x05,  // 166:789
  0x03, 0x1B, 0x0A, 0x06,  // 167:795
  0x03, 0x25, 0x07, 0x05,  // 168:805
  0x03, 0x2C, 0x09, 0x06,  // 169:812
  0x03, 0x35, 0x07, 0x05,  // 170:821
  0x03, 0x3C, 0x07, 0x05,  // 171:828
  0x03, 0x43, 0x07, 0x05,  // 172:835
  0x03, 0x4A, 0x07, 0x05,  // 173:842
  0x03, 0x51, 0x09, 0x06,  // 174:849
  0x03, 0x5A, 0x07, 0x05,  // 175:858
  0x03, 0x61, 0x05, 0x05,  // 176:865
  0x03, 0x66, 0x07, 0x05,  // 177:870
  0x03, 0x6D, 0x07, 0x05,  // 178:877
  0x03, 0x74, 0x07, 0x05,  // 179:884
  0x03, 0x7B, 0x05, 0x05,  // 180:891
  0x03, 0x80, 0x07, 0x05,  // 181:896
  0x03, 0x87, 0x07, 0x05,  // 182:903
  0x03, 0x8E, 0x05, 0x05,  // 183:910
  0x03, 0x93, 0x06, 0x05,  // 184:915
  0x03, 0x99, 0x05, 0x05,  // 185:921
  0x03, 0x9E, 0x07, 0x05,  // 186:926
  0x03, 0xA5, 0x09, 0x05,  // 187:933
  0x03, 0xAE, 0x07, 0x05,  // 188:942
  0x03, 0xB5, 0x09, 0x05,  // 189:949
  0x03, 0xBE, 0x07, 0x05,  // 190:958
  0x03, 0xC5, 0x08, 0x05,  // 191:965
  0x03, 0xCD, 0x07, 0x05,  // 192:973
  0x03, 0xD4, 0x07, 0x05,  // 193:980
  0x03, 0xDB, 0x07, 0x05,  // 194:987
  0x03, 0xE2, 0x07, 0x05,  // 195:994
  0x03, 0xE9, 0x07, 0x05,  // 196:1001
  0x03, 0xF0, 0x07, 0x05,  // 197:1008
  0x03, 0xF7, 0x09, 0x06,  // 198:1015
  0x04, 0x00, 0x09, 0x06,  // 199:1024
  0x04, 0x09, 0x09, 0x05,  // 200:1033
  0x04, 0x12, 0x09, 0x05,  // 201:1042
  0x04, 0x1B, 0x09, 0x05,  // 202:1051
  0x04, 0x24, 0x09, 0x05,  // 203:1060
  0x04, 0x2D, 0x07, 0x05,  // 204:1069
  0x04, 0x34, 0x07, 0x05,  // 205:1076
  0x04, 0x3B, 0x07, 0x05,  // 206:1083
  0x04, 0x42, 0x07, 0x05,  // 207:1090
  0x04, 0x49, 0x09, 0x06,  // 208:1097
  0x04, 0x52, 0x09, 0x06,  // 209:1106
  0x04, 0x5B, 0x09, 0x06,  // 210:1115
  0x04, 0x64, 0x09, 0x06,  // 211:1124
  0x04, 0x6D, 0x09, 0x06,  // 212:1133
  0x04, 0x76, 0x09, 0x06,  // 213:1142
  0x04, 0x7F, 0x09, 0x06,  // 214:1151
  0x04, 0x88, 0x07, 0x05,  // 215:1160
  0x04, 0x8F, 0x09, 0x06,  // 216:1167
  0x04, 0x98, 0x09, 0x06,  // 217:1176
  0x04, 0xA1, 0x09, 0x06,  // 218:1185
  0x04, 0xAA, 0x09, 0x06,  // 219:1194
  0x04, 0xB3, 0x09, 0x06,  // 220:1203
  0x04, 0xBC, 0x09, 0x05,  // 221:1212
  0x04, 0xC5, 0x09, 0x05,  // 222:1221
  0x04, 0xCE, 0x09, 0x05,  // 223:1230
  0x04, 0xD7, 0x09, 0x05,  // 224:1239
  0x04, 0xE0, 0x09, 0x05,  // 225:1248
  0x04, 0xE9, 0x09, 0x05,  // 226:1257
  0x04, 0xF2, 0x09, 0x05,  // 227:1266
  0x04, 0xFB, 0x09, 0x05,  // 228:1275
  0x05, 0x04, 0x09, 0x05,  // 229:1284
  0x05, 0x0D, 0x0B, 0x06,  // 230:1293
  0x05, 0x18, 0x08, 0x06,  // 231:1304
  0x05, 0x20, 0x07, 0x05,  // 232:1312
  0x05, 0x27, 0x07, 0x05,  // 233:1319
  0x05, 0x2E, 0x07, 0x05,  // 234:1326
  0x05, 0x35, 0x07, 0x05,  // 235:1333
  0x05, 0x3C, 0x07, 0x05,  // 236:1340
  0x05, 0x43, 0x07, 0x05,  // 237:1347
  0x05, 0x4A, 0x07, 0x05,  // 238:1354
  0x05, 0x51, 0x07, 0x05,  // 239:1361
  0x05, 0x58, 0x09, 0x06,  // 240:1368
  0x05, 0x61, 0x09, 0x06,  // 241:1377
  0x05, 0x6A, 0x09, 0x06,  // 242:1386
  0x05, 0x73, 0x09, 0x06,  // 243:1395
  0x05, 0x7C, 0x09, 0x06,  // 244:1404
  0x05, 0x85, 0x09, 0x06,  // 245:1413
  0x05, 0x8E, 0x09, 0x06,  // 246:1422
  0x05, 0x97, 0x07, 0x05,  // 247:1431
  0x05, 0x9E, 0x09, 0x06,  // 248:1438
  0x05, 0xA7, 0x09, 0x06,  // 249:1447
  0x05, 0xB0, 0x09, 0x06,  // 250:1456
  0x05, 0xB9, 0x09, 0x06,  // 251:1465
  0x05, 0xC2, 0x09, 0x06,  // 252:1474
  0x05, 0xCB, 0x07, 0x05,  // 253:1483
  0x05, 0xD2, 0x09, 0x06,  // 254:1490
  0x05, 0xDB, 0x07, 0x05,  // 255:1499

  // Font Data:
  0x00, 0x00, 0x00, 0x00, 0xF8, // 33
  0x00, 0x00, 0x18, 0x00, 0x18, // 34
  0x40, 0x00, 0xF8, 0x00, 0xD0, 0x00, 0x78, 0x00, 0x10, // 35
  0x00, 0x00, 0x98, 0x00, 0x24, 0x01, 0xE8, // 36
  0x00, 0x00, 0x18, 0x00, 0x78, 0x00, 0xD0, 0x00, 0xA0, 0x00, 0x40, // 37
  0x00, 0x00, 0xD0, 0x00, 0xA8, 0x00, 0xD8, 0x00, 0xC0, // 38
  0x00, 0x00, 0x00, 0x00, 0x18, // 39
  0x00, 0x00, 0xF0, 0x00, 0x0C, 0x01, // 40
  0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0xF0, // 41
  0x20, 0x00, 0x60, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x20, // 42
  0x20, 0x00, 0x20, 0x00, 0x78, 0x00, 0x20, 0x00, 0x20, // 43
  0x00, 0x00, 0x00, 0x00, 0x80, 0x01, // 44
  0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // 45
  0x00, 0x00, 0x00, 0x00, 0x80, // 46
  0x00, 0x00, 0x80, 0x01, 0x70, 0x00, 0x08, // 47
  0x00, 0x00, 0x70, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x70, // 48
  0x00, 0x00, 0x08, 0x00, 0xF8, // 49
  0x00, 0x00, 0x98, 0x00, 0xC8, 0x00, 0xB8, 0x00, 0x80, // 50
  0x00, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xD0, // 51
  0x40, 0x00, 0x60, 0x00, 0x50, 0x00, 0xF8, 0x00, 0x40, // 52
  0x40, 0x00, 0x98, 0x00, 0x98, 0x00, 0xE8, // 53
  0x00, 0x00, 0x70, 0x00, 0x98, 0x00, 0xF8, // 54
  0x08, 0x00, 0xC8, 0x00, 0x38, 0x00, 0x08, // 55
  0x00, 0x00, 0xD8, 0x00, 0xA8, 0x00, 0xF8, // 56
  0x00, 0x00, 0x18, 0x00, 0xA8, 0x00, 0xF8, 0x00, 0x20, // 57
  0x00, 0x00, 0x00, 0x00, 0x90, // 58
  0x00, 0x00, 0x00, 0x00, 0x10, 0x01, // 59
  0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x50, 0x00, 0x10, // 60
  0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, // 61
  0x00, 0x00, 0x50, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, // 62
  0x00, 0x00, 0x08, 0x00, 0xE8, 0x00, 0x18, // 63
  0x00, 0x00, 0x70, 0x00, 0xB8, 0x00, 0x78, 0x00, 0x48, 0x00, 0x30, // 64
  0x80, 0x00, 0x70, 0x00, 0x58, 0x00, 0xE0, // 65
  0x00, 0x00, 0xF8, 0x00, 0xA8, 0x00, 0xF8, // 66
  0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0xD8, // 67
  0x00, 0x00, 0xF8, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, // 68
  0x00, 0x00, 0xF8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x88, // 69
  0x00, 0x00, 0xF8, 0x00, 0x28, 0x00, 0x28, 0x00, 0x08, // 70
  0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0xA8, 0x00, 0xE8, // 71
  0x00, 0x00, 0xF8, 0x00, 0x20, 0x00, 0x20, 0x00, 0xF8, // 72
  0x00, 0x00, 0x88, 0x00, 0xF8, 0x00, 0x88, // 73
  0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x78, // 74
  0x00, 0x00, 0xF8, 0x00, 0x20, 0x00, 0x50, 0x00, 0x88, // 75
  0x00, 0x00, 0xF8, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, // 76
  0x00, 0x00, 0xF8, 0x00, 0x30, 0x00, 0x30, 0x00, 0xF8, // 77
  0x00, 0x00, 0xF8, 0x00, 0x30, 0x00, 0x40, 0x00, 0xF8, // 78
  0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, // 79
  0x00, 0x00, 0xF8, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, // 80
  0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x01, // 81
  0x00, 0x00, 0xF8, 0x00, 0x28, 0x00, 0xF8, // 82
  0x00, 0x00, 0xD8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xC0, // 83
  0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, // 84
  0x00, 0x00, 0x78, 0x00, 0x80, 0x00, 0x80, 0x00, 0x78, // 85
  0x08, 0x00, 0x70, 0x00, 0xC0, 0x00, 0x38, // 86
  0x38, 0x00, 0xF0, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x08, // 87
  0x00, 0x00, 0xD8, 0x00, 0x20, 0x00, 0xD8, // 88
  0x08, 0x00, 0x10, 0x00, 0xE0, 0x00, 0x18, // 89
  0x00, 0x00, 0xC8, 0x00, 0xA8, 0x00, 0x98, 0x00, 0x88, // 90
  0x00, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x02, 0x01, // 91
  0x00, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, // 92
  0x00, 0x00, 0x02, 0x01, 0xFE, 0x01, // 93
  0x00, 0x00, 0x30, 0x00, 0x18, 0x00, 0x20, // 94
  0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, // 95
  0x00, 0x00, 0x00, 0x00, 0x08, // 96
  0x00, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0xB0, 0x00, 0xE0, // 97
  0x00, 0x00, 0xF8, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, // 98
  0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, // 99
  0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x00, 0xF8, // 100
  0x00, 0x00, 0x60, 0x00, 0xB0, 0x00, 0xB0, // 101
  0x00, 0x00, 0x10, 0x00, 0xF8, 0x00, 0x14, 0x00, 0x14, // 102
  0x00, 0x00, 0x60, 0x01, 0x90, 0x01, 0x90, 0x01, 0xF0, 0x01, // 103
  0x00, 0x00, 0xF8, 0x00, 0x10, 0x00, 0x10, 0x00, 0xF0, // 104
  0x00, 0x00, 0x90, 0x00, 0xF8, 0x00, 0x80, // 105
  0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xF0, 0x01, // 106
  0x00, 0x00, 0xF8, 0x00, 0x20, 0x00, 0x50, 0x00, 0x80, // 107
  0x00, 0x00, 0x88, 0x00, 0xF8, 0x00, 0x80, // 108
  0x00, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, 0x00, 0x10, 0x00, 0xF0, // 109
  0x00, 0x00, 0xF0, 0x00, 0x10, 0x00, 0x10, 0x00, 0xF0, // 110
  0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, // 111
  0x00, 0x00, 0xF0, 0x01, 0x90, 0x00, 0x90, 0x00, 0x60, // 112
  0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x00, 0xF0, 0x01, // 113
  0x00, 0x00, 0xF0, 0x00, 0x10, 0x00, 0x10, // 114
  0x00, 0x00, 0xB0, 0x00, 0xD0, 0x00, 0xD0, // 115
  0x00, 0x00, 0x10, 0x00, 0xF8, 0x00, 0x90, 0x00, 0x90, // 116
  0x00, 0x00, 0xF0, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF0, // 117
  0x10, 0x00, 0x60, 0x00, 0xC0, 0x00, 0x30, // 118
  0x70, 0x00, 0xE0, 0x00, 0x70, 0x00, 0xE0, 0x00, 0x10, // 119
  0x00, 0x00, 0x90, 0x00, 0x60, 0x00, 0x90, // 120
  0x10, 0x00, 0x60, 0x01, 0xC0, 0x00, 0x30, // 121
  0x00, 0x00, 0x90, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0x80, // 122
  0x00, 0x00, 0x40, 0x00, 0xB8, 0x01, 0x04, 0x02, // 123
  0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, // 124
  0x00, 0x00, 0x04, 0x02, 0xB8, 0x01, 0x40, // 125
  0x40, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, // 126
  0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, // 161
  0x00, 0x00, 0xE0, 0x00, 0x20, 0x01, 0x10, 0x01, 0xA0, // 162
  0xA0, 0x00, 0xF8, 0x00, 0xA8, 0x00, 0x88, 0x00, 0x80, // 163
  0x00, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x90, 0x00, 0xF0, // 164
  0x08, 0x00, 0x70, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x68, // 165
  0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, // 166
  0x00, 0x00, 0x78, 0x01, 0xA8, 0x02, 0xA8, 0x02, 0x58, 0x01, // 167
  0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, // 168
  0x00, 0x00, 0x60, 0x00, 0xD0, 0x00, 0x90, 0x00, 0x60, // 169
  0x00, 0x00, 0x38, 0x00, 0x28, 0x00, 0x30, // 170
  0x00, 0x00, 0x40, 0x00, 0xE0, 0x00, 0xA0, // 171
  0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x60, // 172
  0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // 173
  0x00, 0x00, 0x60, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x60, // 174
  0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, // 175
  0x00, 0x00, 0x08, 0x00, 0x08, // 176
  0x20, 0x00, 0xA0, 0x00, 0xF8, 0x00, 0xA0, // 177
  0x00, 0x00, 0x28, 0x00, 0x38, 0x00, 0x20, // 178
  0x00, 0x00, 0x08, 0x00, 0x38, 0x00, 0x08, // 179
  0x00, 0x00, 0x00, 0x00, 0x08, // 180
  0x00, 0x00, 0xF0, 0x01, 0x00, 0x01, 0xF0, // 181
  0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0xF8, // 182
  0x00, 0x00, 0x00, 0x00, 0x20, // 183
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // 184
  0x00, 0x00, 0x08, 0x00, 0x38, // 185
  0x00, 0x00, 0x38, 0x00, 0x28, 0x00, 0x10, // 186
  0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x70, 0x00, 0x20, // 187
  0x08, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, // 188
  0x08, 0x00, 0x78, 0x00, 0x20, 0x00, 0xB0, 0x00, 0x60, // 189
  0x08, 0x00, 0x70, 0x00, 0x90, 0x00, 0xE0, // 190
  0x00, 0x00, 0x80, 0x01, 0x70, 0x01, 0x00, 0x01, // 191
  0x80, 0x00, 0x72, 0x00, 0x5C, 0x00, 0xE0, // 192
  0x80, 0x00, 0x70, 0x00, 0x5C, 0x00, 0xE2, // 193
  0x80, 0x00, 0x72, 0x00, 0x5A, 0x00, 0xE0, // 194
  0x80, 0x00, 0x72, 0x00, 0x5A, 0x00, 0xE2, // 195
  0x80, 0x00, 0x72, 0x00, 0x58, 0x00, 0xE2, // 196
  0x80, 0x00, 0x70, 0x00, 0x5E, 0x00, 0xE0, // 197
  0x00, 0x00, 0xE0, 0x00, 0x58, 0x00, 0xF8, 0x00, 0xA8, // 198
  0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x01, 0xD8, // 199
  0x00, 0x00, 0xF8, 0x00, 0xAA, 0x00, 0xA8, 0x00, 0x88, // 200
  0x00, 0x00, 0xF8, 0x00, 0xA8, 0x00, 0xAA, 0x00, 0x88, // 201
  0x00, 0x00, 0xF8, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0x88, // 202
  0x00, 0x00, 0xFA, 0x00, 0xA8, 0x00, 0xAA, 0x00, 0x88, // 203
  0x00, 0x00, 0x8A, 0x00, 0xFC, 0x00, 0x88, // 204
  0x00, 0x00, 0x88, 0x00, 0xFC, 0x00, 0x8A, // 205
  0x00, 0x00, 0x8A, 0x00, 0xFA, 0x00, 0x88, // 206
  0x00, 0x00, 0x8A, 0x00, 0xF8, 0x00, 0x88, // 207
  0x20, 0x00, 0xF8, 0x00, 0xA8, 0x00, 0x88, 0x00, 0x70, // 208
  0x00, 0x00, 0xF8, 0x00, 0x32, 0x00, 0x42, 0x00, 0xF8, // 209
  0x00, 0x00, 0x70, 0x00, 0x8A, 0x00, 0x88, 0x00, 0x70, // 210
  0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x8A, 0x00, 0x70, // 211
  0x00, 0x00, 0x70, 0x00, 0x8A, 0x00, 0x8A, 0x00, 0x70, // 212
  0x00, 0x00, 0x70, 0x00, 0x8A, 0x00, 0x8A, 0x00, 0x70, // 213
  0x00, 0x00, 0x70, 0x00, 0x8A, 0x00, 0x88, 0x00, 0x72, // 214
  0x00, 0x00, 0x50, 0x00, 0x20, 0x00, 0x50, // 215
  0x00, 0x00, 0x70, 0x01, 0xA8, 0x00, 0xA8, 0x00, 0x78, // 216
  0x00, 0x00, 0x78, 0x00, 0x82, 0x00, 0x80, 0x00, 0x78, // 217
  0x00, 0x00, 0x78, 0x00, 0x80, 0x00, 0x82, 0x00, 0x78, // 218
  0x00, 0x00, 0x78, 0x00, 0x82, 0x00, 0x82, 0x00, 0x78, // 219
  0x00, 0x00, 0x78, 0x00, 0x82, 0x00, 0x80, 0x00, 0x7A, // 220
  0x08, 0x00, 0x10, 0x00, 0xE4, 0x00, 0x12, 0x00, 0x08, // 221
  0x00, 0x00, 0xF8, 0x00, 0x50, 0x00, 0x50, 0x00, 0x20, // 222
  0x00, 0x00, 0xF8, 0x00, 0x84, 0x00, 0xBC, 0x00, 0x40, // 223
  0x00, 0x00, 0xE0, 0x00, 0xB8, 0x00, 0xB0, 0x00, 0xE0, // 224
  0x00, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0xB0, 0x00, 0xE0, // 225
  0x00, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0xB8, 0x00, 0xE0, // 226
  0x00, 0x00, 0xD8, 0x00, 0xB8, 0x00, 0xB8, 0x00, 0xE0, // 227
  0x00, 0x00, 0xD8, 0x00, 0xB0, 0x00, 0xB8, 0x00, 0xE0, // 228
  0x00, 0x00, 0xD0, 0x00, 0xBC, 0x00, 0xB0, 0x00, 0xE0, // 229
  0x00, 0x00, 0xD0, 0x00, 0xB0, 0x00, 0xF0, 0x00, 0xB0, 0x00, 0x20, // 230
  0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x01, // 231
  0x00, 0x00, 0x60, 0x00, 0xB8, 0x00, 0xB0, // 232
  0x00, 0x00, 0x60, 0x00, 0xB0, 0x00, 0xB0, // 233
  0x00, 0x00, 0x60, 0x00, 0xB0, 0x00, 0xB8, // 234
  0x00, 0x00, 0x68, 0x00, 0xB0, 0x00, 0xB8, // 235
  0x00, 0x00, 0x90, 0x00, 0xF8, 0x00, 0x80, // 236
  0x00, 0x00, 0x90, 0x00, 0xF8, 0x00, 0x80, // 237
  0x00, 0x00, 0x98, 0x00, 0xF8, 0x00, 0x88, // 238
  0x00, 0x00, 0x98, 0x00, 0xF0, 0x00, 0x88, // 239
  0x00, 0x00, 0x60, 0x00, 0x9C, 0x00, 0x98, 0x00, 0x74, // 240
  0x00, 0x00, 0xF8, 0x00, 0x18, 0x00, 0x18, 0x00, 0xF0, // 241
  0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, // 242
  0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, // 243
  0x00, 0x00, 0x60, 0x00, 0x98, 0x00, 0x98, 0x00, 0x60, // 244
  0x00, 0x00, 0x60, 0x00, 0x98, 0x00, 0x98, 0x00, 0x60, // 245
  0x00, 0x00, 0x60, 0x00, 0x98, 0x00, 0x90, 0x00, 0x68, // 246
  0x20, 0x00, 0x20, 0x00, 0x68, 0x00, 0x20, // 247
  0x00, 0x00, 0x60, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x60, // 248
  0x00, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x80, 0x00, 0xF0, // 249
  0x00, 0x00, 0xF0, 0x00, 0x80, 0x00, 0x88, 0x00, 0xF0, // 250
  0x00, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x88, 0x00, 0xF0, // 251
  0x00, 0x00, 0xF8, 0x00, 0x80, 0x00, 0x88, 0x00, 0xF0, // 252
  0x10, 0x00, 0x60, 0x01, 0xC8, 0x00, 0x30, // 253
  0x00, 0x00, 0xFC, 0x01, 0x90, 0x00, 0x90, 0x00, 0x60, // 254
  0x10, 0x00, 0x68, 0x01, 0xC0, 0x00, 0x38 // 255
};




#endif
